package main

import (
	"filestore-server/handler"
	"fmt"
	"net/http"
)

func main() {

	//  http.HandleFunc 指定路由规则

	// 处理静态资源不能直接访问问题
	http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))

	// ===========  文件操作

	// 上传文件
	http.HandleFunc("/file/upload", handler.UploadHandler)
	// 上传成功响应，/file/upload 请求处理成功后，会重定向到这个该请求
	http.HandleFunc("/file/upload/suc", handler.UploadSuccessHandler)
	// 获取文件元信息
	http.HandleFunc("/file/meta", handler.GetFileMetaHandler)
	// 获取文件列表
	http.HandleFunc("/file/query", handler.GetFileListHandler)
	// 下载文件
	http.HandleFunc("/file/download", handler.DownloadHandler)
	// 修改文件
	http.HandleFunc("/file/update", handler.FileMetaUploadHandler)
	// 删除文件
	http.HandleFunc("/file/delete", handler.FileDeleteHandler)

	// 秒传文件
	http.HandleFunc("/file/fastupload", handler.TryFastUploadHandler)

	// 分块上传
	// 分块上传初始化
	http.HandleFunc("/file/mpupload/init", handler.HTTPInterceptor(handler.InitialMultipartUploadHandler))
	// 分块上传
	http.HandleFunc("/file/mpupload/uppart", handler.HTTPInterceptor(handler.UploadPartHandler))
	// 分块上传完成通知
	http.HandleFunc("/file/mpupload/complete", handler.HTTPInterceptor(handler.CompleteUploadHandler))


	// ============== 用户操作
	// 用户注册
	http.HandleFunc("/user/signup", handler.SignupHandler)
	// 用户登录
	http.HandleFunc("/user/signin", handler.SigninHandler)
	// 查询用户信息
	//http.HandleFunc("/user/info", handler.UserInfoHandler)
	http.HandleFunc("/user/info", handler.HTTPInterceptor(handler.UserInfoHandler))

	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		fmt.Printf("启动服务器失败: %s", err.Error())
	}
}

